package com.springboot.autoconfigure.oss.service;

import com.springboot.autoconfigure.oss.config.AbstractOSSPropertis;
import com.springboot.autoconfigure.oss.model.FileInfo;
import com.springboot.autoconfigure.oss.model.FileOssOperationStatus;
import com.springboot.autoconfigure.oss.model.FileUploadStatus;

import java.io.File;
import java.net.URL;
import java.util.List;

public interface OssApiService<T extends AbstractOSSPropertis> {



    static  final String SCOPE_OSSIMPL="OssImplInstance";

    /**
     * 文件url地址
     * @param url
     * @return
     */
    public FileUploadStatus uploadFile(URL url);
    /**
     * 文件url地址  指定url前缀
     * @param url
     * @param  filePrix 文件名前缀
     * @return
     */
    public FileUploadStatus uploadFile(URL url,String filePrix);


    /**
     * 文件上传
     * @param file
     * @return
     */
    public FileUploadStatus uploadFile(File file);



    /**
     * 文件上传指定路径
     * @param file
     * @param filePath 指定文件路径
     * @return
     */
    public FileUploadStatus uploadAbsoulteFilePath(File file,String filePath);

    /**
     * 文件上传 指定文件名称
     * @param file
     * @param fileName
     * @return
     */
    public FileUploadStatus uploadFile(File file,String fileName);


    /**
     * 上传后回调用
     * @param file
     * @param callbackUrl  回调地址
     * @return
     */
    public FileUploadStatus uploadFileAndCallBack(File file,String callbackUrl);
    /**
     * 查找文件
     */
    public List<String> findFile(String... fileNames);

    /**
     * 删除文件
     */
    public FileOssOperationStatus delFile(String... fileNames);

    /**
     * 文件key获取文件
     */
    public FileUploadStatus findFileByKey(String fileKey);

    /**
     * 获取空间文件列表
     */
    public List<FileInfo> getBucketSpaceFile(String prefix, int limit);

}
